// Copyright 2022 a.o.smith ALL Rights Reserved
package com.liuxinlong.modules.specialist.service;

import com.liuxinlong.modules.entity.Difficulty;
import com.liuxinlong.modules.entity.DifficultyPlan;

import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.Map;

/**
 * 技术难点服务层接口
 *
 * @author liuxinlong@hotwater.com.cn
 * @version 1.0.0
 * @since 2023年3月22日
 */
public interface DifficultyService {
    /**
     * 分页查询技术难点信息
     *
     * @param queryParam 查询条件
     * @return 技术难点信息列表
     */
    List<Map<String, Object>> pageDifficultyInfo(Map<String, Object> queryParam);

    /**
     * 查询技术难点信息条数
     *
     * @param queryParam 查询条件
     * @return 技术难点信息条数
     */
    int getDifficultyCount(Map<String, Object> queryParam);

    /**
     * 新增技术难点信息
     *
     * @param difficulty    技术难点信息
     *
     * @return 新增成功标识
     */
    void addDifficultyInfo(Difficulty difficulty);

    /**
     * 修改技术难点信息
     *
     * @param Difficulty 技术难点信息
     */
    void updateDifficultyInfo(Difficulty Difficulty);

    /**
     * 删除技术难点信息
     *
     * @param id 技术难点信息id
     */
    void deleteDifficultyInfo(String id);

    /**
     * 导出技术难点信息
     *
     * @param projectId       项目信息id
     *                        @param pointType       类型
     * @param response response
     */
    void exportDifficultyInfo(String projectId,int pointType, HttpServletResponse response);

    /**
     * 分页查询专家方案信息
     *
     * @param queryParam 查询条件
     * @return 专家方案信息列表
     */
    List<Map<String, Object>> pageDifficultyPlanInfo(Map<String, Object> queryParam);

    /**
     * 查询专家方案信息条数
     *
     * @param queryParam 查询条件
     * @return 专家方案信息条数
     */
    int getDifficultyPlanCount(Map<String, Object> queryParam);

    /**
     * 新增专家方案信息
     *
     * @param difficultyPlan    专家方案信息
     *
     * @return 新增成功标识
     */
    void addDifficultyPlanInfo(DifficultyPlan difficultyPlan);

    /**
     * 修改专家方案信息
     *
     * @param difficultyPlan 专家方案信息
     */
    void updateDifficultyPlanInfo(DifficultyPlan difficultyPlan);

    /**
     * 删除专家方案信息
     *
     * @param id 专家方案信息id
     */
    void deleteDifficultyPlanInfo(String id);

    /**
     * 导出专家方案信息
     *
     * @param id       技术难点id
     * @param response response
     */
    void exportDifficultyPlanInfo(String id, HttpServletResponse response);

    /**
     * 反馈专家方案
     *
     * @param id 专家方案id
     * @param feedback 反馈结果
     */
    void feedbackDifficultyPlanInfo(String id,int feedback);
}
